package com.csyf.manager.schedule;

import com.csyf.manager.service.OrderBiz;
import com.csyf.manager.service.OrderService;
import com.csyf.manager.service.PayMentBiz;
import com.csyf.manager.service.SysTradeSummaryService;
import com.csyf.manager.service.impl.SysAgentBalanceBiz;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;


/**
 * @Author: Enzo
 * @Date: 2018/3/28 16:32
 */
@Slf4j
@Component
public class TradeSumSchedule {

    @Autowired
    private OrderService orderService;


    @Autowired
    private OrderBiz orderBiz;


    @Autowired
    private PayMentBiz payMentBiz;

    @Autowired
    private SysTradeSummaryService sysTradeSummaryService;

    @Autowired
    private SysAgentBalanceBiz sysAgentBalanceBiz;


    @Autowired
    private Environment env;



//    @Scheduled(cron = "0 0/1 * * * ? ")
//    public void orderquery() {
//
//
//        String[] activeProfiles = env.getActiveProfiles();
//        List<String> strings = Arrays.asList(activeProfiles);
//
//        log.info("scheduled 2: {} ,profile: {}", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), env.getActiveProfiles());
//
//        List<SysTrade> sysTrades = orderService.queryWaitOrder();
//
//        for (SysTrade sysTrade : sysTrades) {
//            try {
//                Date createTime = sysTrade.getCreateTime();
//                Date curDate = new Date();
//                //如果当前时间和创建时间 小于40s 则不进行查询
//                if (curDate.getTime() - createTime.getTime() < 40000) {
//                    continue;
//                }
//
//                ServiceEnum serviceEnum = ServiceEnum.valueOf(sysTrade.getServiceType());
//                switch (serviceEnum) {
//                    case XFZF_JD:
//                    case XFZF_JD_H5:
//                        if (strings.contains("prod")) {
//                            xftxprocess(sysTrade);
//                        }
//                        break;
//                    case SYB_WEIXIN_SM:
//                    case SYB_ALI_SM:
//                        sybprocess(sysTrade);
//                        break;
//                    case H5WKPAY:
//                        yktprocess(sysTrade);
//                        break;
//                    case SYT_WEIXIN:
//                    case SYT_ALI:
//                    case SYT_QQ:
//                        sytprocess(sysTrade);
//                        break;
//                }
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//
//        log.info("处理代付未知状态的订单");
//        List<SysPayment> sysPayments = payMentBiz.queryunknowOrder();
//        for (SysPayment sysPayment : sysPayments) {
//
//            ServiceEnum serviceEnum = ServiceEnum.valueOf(sysPayment.getService());
//            switch (serviceEnum) {
//                case XFZF_JD:
//                case XFZF_DF_NO:
//                case XFZF_DF_DZ:
//                    if (strings.contains("prod")) {
//                        sybDFprocess(sysPayment.getOutTradeNo());
//                    }
//                    break;
//                case YKT_DF_NO:
//                case YKT_DF_DZ:
//                    if (null == sysPayment.getSrcOrderno()) {
//                        continue;
//                    }
//                    yktDFprocess(sysPayment);
//                    break;
//
//                case SYX_DF:
//                    syxdfprocess(sysPayment);
//                    break;
//                case SAND_DF:
//                    sanddfprocess(sysPayment);
//                    break;
//
//            }
//
//
//        }
//
//
//    }

//    private void sanddfprocess(SysPayment sysPayment) {
//
//        try {
//            Map<String, String> map = fastPayBiz.queryDfOrder(sysPayment.getOutTradeNo(), sysPayment.getMchId(), sysPayment.getSrcMchId());
//            String respCode = map.get("respCode");
//            String respDesc = map.get("respDesc");
//            String orderCode = map.get("orderCode");
//            String resultFlag = map.get("resultFlag");
//            String origRespCode = map.get("origRespCode");
//            String origRespDesc = map.get("origRespDesc");
//            String sandSerial = map.get("sandSerial");
//
//            if ("0000".equals(respCode)) {
//
//                if ("0000".equals(origRespCode) && "0".equals(resultFlag)) {
//                    payMentBiz.doSuccess(orderCode, sandSerial, origRespCode + "|" + origRespDesc);
//                } else if ("0001".equals(origRespCode) || "0002".equals(origRespCode) || "2".equals(resultFlag)) {
//                    payMentBiz.doUnkunow(orderCode, sandSerial, origRespCode + "|" + origRespDesc);
//                }else{
//                    payMentBiz.doFail(orderCode,origRespCode + "|" + origRespDesc);
//                }
//
//            } else {
//                payMentBiz.doFail(orderCode,respCode + "|" + respDesc);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//
//    private void syxdfprocess(SysPayment sysPayment) {
//        Map<String, String> map = syxPayBiz.queryDfOrder(sysPayment.getOutTradeNo(), sysPayment.getMchId(), sysPayment.getSrcMchId(), sysPayment.getCreateTime());
//        String retCode = map.get("retCode");
//        String retMsg = map.get("retMsg");
//
//        if ("0000".equals(retCode)) {
//            String status = map.get("status");
//            if ("00".equals(status)) {
//                payMentBiz.doUnkunow(sysPayment.getOutTradeNo(), map.get("orderId"), map.get("retCode") + "|" + map.get("retMsg"));
//
//            } else if ("04".equals(status)) {
//                payMentBiz.doSuccess(sysPayment.getOutTradeNo(), map.get("orderId"), map.get("retCode") + "|" + map.get("retMsg"));
//
//            } else if ("05".equals(status)) {
//                payMentBiz.doFail(sysPayment.getOutTradeNo(), map.get("retMsg"));
//            }
//        } else {
//            payMentBiz.doFail(sysPayment.getOutTradeNo(), retCode + "|" + retMsg);
//        }
//
//    }
//
//    private void sytprocess(SysTrade sysTrade) {
//
//        Map<String, String> queryorder = sytApiService.queryorder(sysTrade.getOutTradeNo(), sysTrade.getMchId(), sysTrade.getSrcMchId());
//        if ("1".equals(queryorder.get("code"))) {
//            orderBiz.processOrder(sysTrade);
//        } else if ("2".equals(queryorder.get("code"))) {
//            orderBiz.orderFaile(sysTrade.getOutTradeNo(), "FF", queryorder.get("message"));
//        } else if ("3".equals(queryorder.get("code"))) {
//            orderBiz.orderSuccess(sysTrade.getOutTradeNo(), "000000", queryorder.get("message"));
//        }
//
//    }
//
//    private void yktprocess(SysTrade sysTrade) {
//        try {
//            String success = "FS";
//            String yyyyMMdd = new SimpleDateFormat("yyyyMMdd").format(sysTrade.getCreateTime());
//            Map<String, String> stringStringMap = wkPayBiz.queryOrder(sysTrade.getOutTradeNo(), sysTrade.getSrcOrderNo(), yyyyMMdd, sysTrade.getMchId(), sysTrade.getSrcMchId());
//            String respCode = stringStringMap.get("respCode");
//            if (success.equals(respCode)) {
//                String orderId = stringStringMap.get("orderId");
//                if (null != stringStringMap.get("transCode")) {
//                    switch (stringStringMap.get("transCode")) {
//                        case "00":
//                            orderBiz.orderSuccess(orderId, stringStringMap.get("transCode"), stringStringMap.get("transMsg"));
//                            break;
//                        case "F5":
//                            orderBiz.processOrder(sysTrade);
//                            break;
//                        default:
//                            orderBiz.orderFaile(orderId, stringStringMap.get("respCode"), stringStringMap.get("transMsg"));
//                            break;
//                    }
//                } else {
//                    orderBiz.orderFaile(orderId, stringStringMap.get("respCode"), stringStringMap.get("transMsg"));
//                }
//
//            } else {
//                orderBiz.orderFaile(sysTrade.getOutTradeNo(), "9998", "订单失败");
//            }
//
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }
//    }
//
//
//    /**
//     * 亿卡通代付处理
//     *
//     * @param sysPayment
//     */
//    void yktDFprocess(SysPayment sysPayment) {
//        try {
//            String success = "FS";
//            String yyyyMMdd = new SimpleDateFormat("yyyyMMdd").format(sysPayment.getCreateTime());
//            Map<String, String> stringStringMap = wkPayBiz.queryDfOrder(sysPayment.getOutTradeNo(), sysPayment.getSrcOrderno(), yyyyMMdd, sysPayment.getMchId(), sysPayment.getSrcMchId());
//            String respCode = stringStringMap.get("respCode");
//            if (success.equals(respCode)) {
//                String orderId = stringStringMap.get("orderId");
//                if (null != stringStringMap.get("transCode")) {
//                    switch (stringStringMap.get("transCode")) {
//                        case "00":
//                            payMentBiz.doSuccess(sysPayment.getOutTradeNo(), stringStringMap.get("transCode") + "|" + stringStringMap.get("transMsg"));
//                            break;
//                        case "F5":
//                            payMentBiz.doUnkunow(sysPayment.getOutTradeNo(), stringStringMap.get("transCode") + "|" + stringStringMap.get("transMsg"));
//                            break;
//                        default:
//                            payMentBiz.doFail(sysPayment.getOutTradeNo(), stringStringMap.get("respCode") + "|" + stringStringMap.get("transMsg"));
//                            break;
//                    }
//                } else {
//                    payMentBiz.doFail(orderId, stringStringMap.get("respCode") + "|" + stringStringMap.get("respMsg"));
//                }
//
//            }
//
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//        }
//    }
//
//    void sybDFprocess(String orderNo) {
//        try {
//            Map<String, String> map = payMentBiz.queryChannelOrder(orderNo);
//            String pl_transState = map.get("pl_transState");
//            String pl_transMessage = map.get("pl_transMessage");
//
//            switch (pl_transState) {
//                case "1":
//                    payMentBiz.doSuccess(orderNo, pl_transMessage);
//                    break;
//                case "2":
//                    payMentBiz.doFail(orderNo, pl_transMessage);
//                    break;
//                case "3":
//                    payMentBiz.doUnkunow(orderNo, pl_transMessage);
//                    break;
//            }
//        } catch (Exception e) {
//            payMentBiz.doFail(orderNo, e.getMessage());
//        }
//    }
//
//
//    void xftxprocess(SysTrade sysTrade) {
//        try {
//            Map<String, String> stringStringMap = xftxPayQueryBiz.doQuery(sysTrade.getOutTradeNo(), sysTrade.getMchId(), sysTrade.getSrcMchId());
//            String orderNum = stringStringMap.get("orderNum");
//            String pl_payMessage = stringStringMap.get("pl_payMessage");
//            String pl_payState = stringStringMap.get("pl_payState");
//
//            switch (pl_payState) {
//                case "4":
//                    orderBiz.orderSuccess(sysTrade.getOutTradeNo(), pl_payState, pl_payMessage);
//                    break;
//                case "3":
//                case "5":
//                    orderBiz.orderFaile(sysTrade.getOutTradeNo(), pl_payState, pl_payMessage);
//                    break;
//                case "2":
//                case "6":
//                    orderBiz.processOrder(sysTrade);
//
//            }
//        } catch (Exception e) {
//            orderBiz.orderFaile(sysTrade.getOutTradeNo(), "9999", e.getMessage());
//            log.error("", e.getMessage());
//        }
//    }
//
//
//    void sybprocess(SysTrade sysTrade) {
//        try {
//            Map<String, String> map = sybPayHander.queryOrder(sysTrade.getOutTradeNo(), sysTrade.getMchId(), sysTrade.getSrcMchId());
//            String trxstatus = map.get("trxstatus");
//
//            switch (trxstatus) {
//                case "0000":
//                    orderBiz.orderSuccess(sysTrade.getOutTradeNo(), trxstatus, "交易成功");
//                    break;
//                case "3045":
//                case "3008":
//                case "3999":
//                case "3050":
//                    orderBiz.orderFaile(sysTrade.getOutTradeNo(), trxstatus, map.get("errmsg"));
//                    break;
//                case "2008":
//                    orderBiz.processOrder(sysTrade);
//            }
//        } catch (Exception e) {
//            log.error("", e);
//            orderBiz.orderFaile(sysTrade.getOutTradeNo(), null, e.getMessage());
//        }
//
//
//    }
}
